본문으로 건너뛰기

선점형 스케줄링과 비선점형 스케줄링

선점형 스케줄링(Preemptive Scheduling)

선점이란 남보다 앞서서 차지함을 의미한다. 선점형 스케줄링은 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식을 의미한다.

다시 말해 어느 하나의 프로세스가 자원 사용을 독점할 수 없는 스케줄링 방식이다.

프로세스마다 정해진 시간만큼 CPU를 사용하고, 정해진 시간을 모두 소비하여 타이머 인터럽트가 발생하면 운영체제가 해당 프로세스로부터 CPU 자원을 빼앗아 다음 프로세스에 할당하는 방식은 선점형 스케줄링 방식의 일종으로 볼 수 있다.

대부분의 운영체제는 선점형 스케줄링을 차용하고 있다. 선점형 스케줄링은 더 급한 프로세스가 언제든 끼어들어 사용할 수 있는 스케줄링 방식이므로 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 배분할 수 있다는 장점이 있지만, 그만큼 문맥 교환 과정에서 오버헤드가 발생할 수 있다.

비선점형 스케줄링(Non-Preemptive Scheduling)

비선점형 스케줄링이란 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링 방식을 의미한다. 다시 말해 비선점형 스케줄링은 하나의 프로세스가 자원 사용을 독점할 수 있는 스케줄링 방식이다.

비선점형 스케줄링은 문맥 교환의 횟수가 선점형 스케줄링보다 적기 때문에 문맥교환에서 발생하는 오버헤드는 선점형 스케줄링보다는 적지만, 하나의 프로세스가 자원을 사용 중이라면 당장 자원을 사용해야 하는 상황에서도 무작정 기다리는 수밖에 없다. 모든 프로세스가 골고루 자원을 사용할 수 없다는 단점이 있습니다.

Reference

  • 혼자 공부하는 컴퓨터 구조 및 운영체제